package com.tianji.aigc.service;

import com.tianji.aigc.vo.ChatEventVO;
import com.tianji.common.utils.UserContext;
import reactor.core.publisher.Flux;

/**
 * 用户会话业务接口
 * @author zgp
 * @version V1.0
 * @date 2025-04-21 15:21
 */
public interface ChatService {
    /**
     * 流式对话聊天
     * @param question 用户问题
     * @param sessionId 会话id
     * @return 大模型返回内容
     */
    Flux<ChatEventVO> chat(String question, String sessionId);

    /**
     * 停止内容生成（中断流的响应，大模型内部依旧在生成内容）
     * @param sessionId 会话id
     */
    void stopChat(String sessionId);

    /**
     * 获取对话id，规则：用户id_会话id
     * @param sessionId 会话id
     * @return 对话id
     */
    static String getConversationId(String sessionId){
        return UserContext.getUser() + "_" + sessionId;
    }

    /**
     * 文本对话
     * @param question 用户问题
     * @return
     */
    default String chatText(String question){
        return "";
    }
}
